package com.jt.www.domain.enums.wxb;

import org.apache.commons.lang.StringUtils;

/**
 * 支付到期时间配置
 */
public enum PayOutSetEnum {

    GAB_N("20PR666593", 120 * 60 * 1000L, "关爱保 新保允许倒签 支付时间120分钟", "N"),
    GAB_JTB_N("20PR947530", 120 * 60 * 1000L, "关爱保家庭版 新保允许倒签 支付时间120分钟", "N"),
    GAB_Y("20PR666593", 120 * 60 * 1000L, "关爱保 续保允许倒签 支付时间120分钟", "Y"),
    GAB_JTB_Y("20PR947530", 120 * 60 * 1000L, "关爱保家庭版 续保允许倒签 支付时间120分钟", "Y"),
    CZHH_Y("19PR799624", 120 * 60 * 1000L, "成长护航 续保允许倒签 支付时间120分钟", "Y"),
    BYYL_Y("19PR352395", 120 * 60 * 1000L, "百万医疗 续保允许倒签 支付时间120分钟", "Y");

    private static final Long DEFAULT_OUT_TIMES = 120 * 60 * 1000L; // 未配置的产品默认支付时间设置为120分钟
    private static final Boolean DEFAULT_IS_REVERSAL = false; // 未配置的产品默认不允许倒签

    /**
     * 产品编码
     */
    private String productCode;

    /**
     * 支付时间（以分钟为单位）
     */
    private Long outTimes;

    /**
     * 描述
     */
    private String desc;

    /**
     * 是否续保 新保-N；续保-Y；
     */
    private String isRenewal;

    PayOutSetEnum(String productCode, Long outTimes, String desc, String isRenewal) {
        this.productCode = productCode;
        this.outTimes = outTimes;
        this.desc = desc;
        this.isRenewal = isRenewal;
    }

    /**
     * 根据产品编码查询支付时间(分钟)
     * 未配置产品默认支付时间设置为120分钟
     *
     * @param productCode
     * @return
     */
    public static Long getPayTimeByProductCode(String productCode, String isRenewal) {
        if (StringUtils.isBlank(productCode)) {
            return DEFAULT_OUT_TIMES;
        }
        for (PayOutSetEnum payOutSetEnum : PayOutSetEnum.values()) {
            if (payOutSetEnum.productCode.equals(productCode) && payOutSetEnum.isRenewal.equals(isRenewal)) {
                return payOutSetEnum.outTimes;
            }
        }
        return DEFAULT_OUT_TIMES;
    }


    public static Long getDefaultOutTimes() {
        return DEFAULT_OUT_TIMES;
    }

    public static Boolean getDefaultIsReversal() {
        return DEFAULT_IS_REVERSAL;
    }

    public String getProductCode() {
        return productCode;
    }

    public Long getOutTimes() {
        return outTimes;
    }

    public String getDesc() {
        return desc;
    }

    public String getIsRenewal() {
        return isRenewal;
    }
}


